# ===========================================================================
# Project:   Abbot - SproutCore Build Tools
# Copyright: ©2009 Apple Inc.
#            portions copyright @2006-2011 Strobe Inc.
#            and contributors
# ===========================================================================

# Default buildfile loaded by all projects.  Any options you put into your
# project buildfile will override these defaults.

# Import all build tasks
import *Dir.glob(File.join(File.dirname(current_path), 'buildtasks', '**', '*.rake'))

mode :all do
  config :all,

    # REQUIRED CONFIGS
    # You will not usually need to override these configs, but the code
    # assumes they will be present, so you must support them.
    :build_prefix   => 'tmp/build',
    :staging_prefix => 'tmp/staging',
    :cache_prefix   => 'tmp/cache',
    :url_prefix     => 'static',

    # Defines the directories that may contain targets, and maps them to a
    # target type.  When a project tries to find all of the targets in a
    # project, it will use this map to find them.
    :target_types => {
      :apps       => :app,
      :clients    => :app,
      :pages      => :app, # used for static pages with your site
      :frameworks => :framework,
      :themes     => :theme,
      :modules    => :module
    },

    # Allows the target to have other targets nested inside of it.  Override
    # this in your target Buildfile to disable nesting.
    :allow_nested_targets => true,

    # The default preferred language.  Assets will be pulled from this
    # language unless otherwise specified.
    :preferred_language => :en,

    # Do not include fixtures in built project.
    :load_fixtures => false,

    # Do not include debug directory in built project
    :load_debug => false,

    # Do not load protocols in production mode
    :load_protocols => false,

    # Do not build tests.
    :load_tests => false,

    # Generate a combined javascript and stylesheet
    :combine_javascript => true,
    :combine_stylesheets => true,
    
    # Use @charset "UTF-8" by default
    :css_charset => "UTF-8",

    # We do NOT want to pad sprites for debugging in production. This both increases filesize
    # and makes the background of the sprite an embarrassing pink.
    :pad_sprites_for_debugging => false,
    
    # Optimizing sprites is good, but some apps that (appeared) to work before may break with
    # this turned on. :pad_sprites_for_debugging makes the errors very visible, and that IS
    # turned on in dev by default, so hopefully we should be able to make this default eventually.
    #
    # For reference, optimized sprites lay out sprites horizontally in addition to vertically.
    :optimize_sprites => false,
    
    # enable the hack that splits CSS into files with only ~4000 selectors for IE
    :split_css_for_ie => true,

    # by default all targets autobuild
    :autobuild => true,

    # by default minify javacript and stylesheets
    :minify => true,

    # use the default layout defined in SproutCore
    :layout => 'sproutcore:lib/index.rhtml',
    :test_layout => 'sproutcore:lib/index.rhtml',

    # name a framework to use as the theme.  will be included in required
    # frameworks automatically if found.
    :theme  => 'sproutcore/ace',

    # use default bootstrap framework
    :bootstrap_inline => 'sproutcore/bootstrap:javascript',

    # In design mode, load the designer
    :design_required => ['sproutcore/designer'],

    # packs all JavaScript and CSS into one file for reduced HTTP requests
    :use_packed => true,

    # generates output using sprites rather than data urls. This is default
    # for all modes: it is faster to generate and browsers handle sprites better
    # than data urls.
    :use_sprites => true,

		# If set to true, the specified framework, if loaded via the SC.loadBundle
		# API, will be set up to be lazily instantiated when loaded.
		:lazy_instantiation => false,

    # if set to true then the index.html will build into the global language
    # and target directory.  This can interfere with deploying multiple builds
    # at one but it is more convenient.
    :overwrite_current => false,

    # causes the default index.html file to add an overflow:hidden statement
    # to the body tag.  This is usually preferred since it makes drag and drop
    # look nicer
    :hide_body_overflow => true,

    # A hash of additional MIME types, i.e. { '.m4a' => 'audio/mp4a-latm' }
    :mime_types => {},
    
    # Whether to generate an manifest.appcache file for HTML5 application caching
    :html5_manifest => false,
    # Which networks/URLs to allow if HTML5 application caching is turned on
    :html5_manifest_networks => [],

    # Default favicon.  You can set your own or set it to nil to not use one.
    # If one is set, the path will be evaluated via sc_static() in the
    # index.rhtml file.
    :favicon => 'favicon.ico',

    # Whether to include touch icons in the index.html and other touch related
    # properties
    :touch_enabled => true,

    # If touch graphics are enabled (see above), then these are the paths which
    # will be used for the various graphics.  The paths will be evaluated via
    # sc_static() in the index.rhtml file.
    #
    # Note:  If you specify both a precomposed icon and a "regular" icon, the
    #        precomposed version will be used.
    :icon                    => 'sproutcore-logo.png',
    :precomposed_icon        => nil,
    :startup_image_portrait  => 'sproutcore-startup-portrait.png',
    :startup_image_landscape => 'sproutcore-startup-landscape.png'
    
end


mode :debug do
  config :all,

    # in debug mode, load fixtures, debug, tests, and protocols
    :load_fixtures  => true,
    :load_debug     => true,
    :load_tests     => true,
    :load_protocols => true,

    # Do not combine javascript and stylesheet
    :combine_javascript => false,
    :combine_stylesheets => true,

    :minify_javascript => false,
		:minify_css => false,
		:minify_html => false,
		
		# In debug mode, we want to pad sprites for debugging so it is clear
		# when the developer messes up their CSS.
		:pad_sprites_for_debugging => true,

    :build_prefix => 'tmp/debug/build',
    :staging_prefix => 'tmp/debug/staging',

    # debug settings for sc-server
    :serve_exceptions => true,
    :reload_project   => true,

    # In debug mode, we want to simply compute the build number each time
    # to ensure the latest version is always loaded.
    :build_number     => :current,

    # Instructs the URL builders to include a timestamp token at the end of
    # urls.  This option is only useful in development mode since browsers
    # will respect the timestamp token as a way to unique the url.  This
    # should not be used in production as some proxies on the internet do
    # not respect tokens.
    :timestamp_urls  =>  true,

    # Do not pack javascripts in development mode, we want each file to
    # load independently.
    :use_packed => false,
    
    # Turn off HTML5 application caching by default in debug mode
    :html5_manifest => false
end


